
// 后面自己写控制权限
// permission是权限控制
import router from '@/router/index'
// import { includes } from 'core-js/core/array'
import store from './store'
// 白名单名单
const whiteList = ['/login', '/404']

// 显示网页标题
import getPageTitle from '@/utils/get-page-title'
// 导入进度条组件
import NProgress from 'nprogress' // progress bar
import 'nprogress/nprogress.css' // progress bar style
// 页面跳转先来到路由守卫
router.beforeEach(async(to, from, next) => {
// 进来就显示进度条
  NProgress.start()
  console.log(to, '到哪里去')
  console.log(from, '到哪里去')
  // next() 指定跳转||放行
  const token = store.state.user.token
  // 先判断是否携带token
  if (token) {
    console.log('已经登录的')
    if (to.path === '/login') {
      console.log('已经登录了,不能前往登录页')
      // 指定去到首页
      next('/')
      // 如果next是去指定地址,函数不会经过touter.afterEach就不会调用done,所以需要手动加
      // 关闭进度条
      NProgress.done()
    } else {
      // 已经登录了,在这里调用dispatch(vuex)
      // store.dispatch("user/模块名")

      // 优化
      if (!store.state.user.userinfo.userId) {
        await store.dispatch('user/getUserInfo')
      }
      // 获取用户图片
      // await store.dispatch('user/getUserInfo')

      // 封装标题
      document.title = getPageTitle(to.meta.title)
      // 去别的页面,直接放行
      next()
    }
  } else {
    console.log('没有登录')
    if (
      // to.path === '/login'
      // includes判断
      whiteList.includes(to.path)
    ) {
      // 因为去login是不需要登录的,直接白名单放行
      console.log('拥有白名单可以放行')
      next()
    } else {
      console.log('没有白名单,请登录')
      next('/login')
      // 关闭进度条
      NProgress.done()
    }
  }
})
router.afterEach(() => {
  // 关闭进度条
  NProgress.done()
})

